`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/11/22 21:34:39
// Design Name: 
// Module Name: wave_procs
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module wave_procs(
    input clk,
    input clk_adc,
    input rst_n,
    input [11:0] sample1,
    input [11:0] sample2,
    input vppset,
    input sp,
    input [31:0] trg_cnt,
    output Hsync,
    output Vsync,
    output [3:0] vgaRed,
    output [3:0] vgaGreen,
    output [3:0] vgaBlue
    );

reg [31:0] tcnt=0;



reg [11:0] wave1 [1023:0];
reg [11:0] wave2 [1023:0];
wire [11:0] v_test,a,c;
wire [1:0]  cz;
wire [11:0] v_test_2,a2,c2;
wire [1:0]  cz2;


vga1 vga_show(
    .clk(clk),
    .clk_adc(clk_adc),
    .tcnt(trg_cnt),
    .vppset(vppset),
    .rst_n(rst_n),
    .Hsync(Hsync),
    .Vsync(Vsync),
    .vgaRed(vgaRed),
    .vgaGreen(vgaGreen),
    .vgaBlue(vgaBlue),
    .sample1(c),
    .sample2(sample2)
);


//reg cnt;
//always@(posedge clk or negedge rst_n)
//begin
//    if(!rst_n) begin
//        cnt = 0;
//    end
//    else begin
//        wave1 [cnt] = sample1;
//        wave2 [cnt] = sample2;
//        cnt = cnt +1;
//        if(cnt >= 1024) cnt = 0;
//    end
//end


reg clk_j=0;//采样时钟
reg [20:0]qout5=0;
reg [20:0]qout4=24;
always @ (sp) //如果水平分辨率被改变
begin
   case(sp)
   3'b000:qout4=24;//分为1MHZ，
   3'b001:qout4=249;//100KHZ
   3'b010:qout4=2499;//分为10KHZ，
   3'b011:qout4=24999;//1KHZ
   3'b100:qout4=249999;//100HZ
   3'b101:qout4=2499999;//10HZ
   3'b110:qout4=24999999;//1HZ
   3'b111:qout4=24999999;//0.1HZ
   endcase
end


always@(posedge clk)
begin
   if(qout5==qout4)   //判断是否达到计数最大值 
       begin
            qout5<=0; 
            clk_j<=~clk_j ;  //达到，则输出翻转。
        end
        else    qout5<=qout5+1;  //未达到。继续计数.
end

assign cz=vppset;
assign v_test=sample1;
assign a=v_test *25/1024;
assign c=a>>cz;


always@(posedge clk_j)
begin
    tcnt=tcnt+1;
    if(tcnt==1024) tcnt=0;
end

// reg cnt_reg=0;
// always @(posedge clk) cnt_reg <= ~cnt_reg;
// ila_1 u_ila_1 (
//     .clk(clk), // input wire clk
//     .probe0(c), // input wire [11:0]  probe0  
//     .probe1(12'b0), // input wire [11:0]  probe1 
//     .probe2(sample1), // input wire [11:0]  probe2 
//     .probe3(12'b0)  ,   // input wire [11:0]  probe3
//     .probe4(trg_cnt[29:0])
// );


endmodule
